package com.lailai.entity;

import com.baomidou.mybatisplus.annotation.*;
import com.fasterxml.jackson.annotation.JsonFormat;
import jakarta.validation.constraints.*;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.util.Date;

/**
 * 版本文件实体类
 * 对应数据库表: version_files
 */
@Data
@NoArgsConstructor
@AllArgsConstructor
@TableName("version_files")
public class VersionFile {

    /**
     * 文件ID
     */
    @TableId(value = "id", type = IdType.AUTO)
    private Long id;

    /**
     * 版本ID
     */
    @TableField("version_id")
    @NotNull(message = "版本ID不能为空")
    private Long versionId;

    /**
     * 文件名
     */
    @TableField("file_name")
    @NotBlank(message = "文件名不能为空")
    private String fileName;

    /**
     * 文件路径
     */
    @TableField("file_path")
    @NotBlank(message = "文件路径不能为空")
    private String filePath;

    /**
     * 文件大小（字节）
     */
    @TableField("file_size")
    @NotNull(message = "文件大小不能为空")
    private Long fileSize;

    /**
     * 文件类型（FULL, PATCH, INCREMENTAL）
     */
    @TableField("file_type")
    @NotBlank(message = "文件类型不能为空")
    private String fileType;

    /**
     * 平台（WINDOWS, MAC, LINUX 等）
     */
    @TableField("platform")
    @NotBlank(message = "平台不能为空")
    private String platform;

    /**
     * 架构（x64, arm64）
     */
    @TableField("architecture")
    private String architecture;

    /**
     * 创建时间
     */
    @TableField("create_time")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date createTime;
}
